package ejb;

import interfaces.Facade;
import interfaces.FacadeServices;
import interfaces.SolicitarCotizacion;
import interfaces.TagsXML;

import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.naming.NamingException;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

import utils.NamingUtil;
import entitys.Cliente;
import entitys.ItemSolicitudCotizacion;
import entitys.Rodamiento;
import entitys.SolicitudCotizacion;

/**
 * Session Bean implementation class FacadeServicesBean
 */
@WebService
@Stateless
public class FacadeServicesBean implements FacadeServices,TagsXML{
	@EJB
	private Facade oFacade;
	
    public FacadeServicesBean() {
        // TODO Auto-generated constructor stub
    }
    
    @WebMethod
	@Override
	public String obtenerCotizacion(String xml){
    	SolicitudCotizacion oSolCot = new SolicitudCotizacion();
    	Document oDoc = null;
		try {
			SAXBuilder xmlBuilder = new SAXBuilder();
			Reader in = new StringReader(xml);
			oDoc = xmlBuilder.build(in);
			Cliente oCliente = new Cliente();
			Element root = oDoc.getRootElement();
			oCliente.setCuit(root.getAttribute(ID_CLIENTE).getValue());
			List<Element> items = root.getChildren(); 
			for(Element oElem : items){
				ItemSolicitudCotizacion oItem = new ItemSolicitudCotizacion();
				Rodamiento oRodamiento = new Rodamiento();
				oRodamiento.setIdRodamiento(oElem.getChild(ID_RODAMIENTO).getTextTrim());
				oItem.setRodamiento(oRodamiento);
				oItem.setCantidad(Integer.valueOf(oElem.getChild(CANTIDAD).getTextTrim()));
				oSolCot.addItem(oItem);
				return oFacade.obtenerCotizacion(oSolCot,oCliente);
			}
		} catch (JDOMException je) {
			je.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		/*try {
			return (((FacadeInterface)NamingUtil.getInitialContext().lookup("TPOEAR/FacadeBean/remote"))).obtenerCotizacion(oSolCot);
		} catch (NamingException e){
			e.printStackTrace();
		}*/
		return null;
	}
}
